﻿using System;
using System.Collections.Generic;

namespace ClickLand.CorporacionPlaza.Comunes.Entidades
{
    /// <summary> Clase que representa la entidad contrato en el sistema </summary>
    public class Contrato
    {
        #region Atributos

        /// <summary> Identificador del registo </summary>
        private long _id;


        /// <summary> Porcentaje de venta  </summary>
        ///<remarks>Para comparar con el cannon del mes</remarks>
        private float _porcentajeVenta;


        /// <summary> Fecha inicio del contrato </summary>
        private DateTime? _fechaInicio;


        /// <summary> Fecha fin del contrato </summary>
        private DateTime _fechaFin;


        /// <summary> Cliente involucrado en el contrato </summary>
        private Cliente _cliente;


        /// <summary> Lista de fiadores del contrato </summary>
        private IList<Fiador> _fiadores;


        /// <summary>  definicion de la  pension de arrendamiento </summary>
        private Pension _pension;


        /// <summary> Lista con las ventas</summary>
        private IList<Venta> _ventas;


        /// <summary> Lista de polizas </summary>
        private IList<Poliza> _polizas;


        /// <summary> Estado del contrato </summary>
        /// <remarks>1 si esta activo 0 inactivo</remarks>
        private int _estado;


        /// <summary> Tipo de garantia del contrato </summary>
        private Garantia _garantia;


        /// <summary> Establecimiento del contrato </summary>
        private Establecimiento _establecimiento;


        /// <summary> Nombre comercial del contrato </summary>
        /// <remarks>Ejemplo McDonalds</remarks>
        private string _nombreComercial;

        
        /// <summary> Monto de la garantia </summary>
        /// <remarks>si y solo si el tipo de garantia no es fiador</remarks>
        private double _montoGarantia;


        /// <summary> Tipo de la firma del contrato </summary>
        private string _tipoFirma;


        /// <summary> Nombre del firmante </summary>
        private string _nombreFirmante;


        /// <summary> Nombre del segundo firmante </summary>
        private string _nombreFirmante2;


        /// <summary> Nombre del tercer firmante </summary>
        private string _nombreFirmante3;


        /// <summary> Lista de recaudos del contrato </summary>
        private IList<Recaudo> _recaudos; 

        #endregion

        #region Propiedades

        /// <summary> Identificador del registo </summary>
        public virtual long Id
        {
            get { return _id; }
            set { _id = value; }
        }


        /// <summary> Porcentaje de venta  </summary>
        ///<remarks>Para comparar con el cannon del mes</remarks>
        public virtual float PorcentajeVenta
        {
            get { return _porcentajeVenta; }
            set { _porcentajeVenta = value; }
        }


        /// <summary> Fecha inicio del contrato </summary>
        public virtual DateTime? FechaInicio
        {
            get { return _fechaInicio; }
            set { _fechaInicio = value; }
        }


        /// <summary> Fecha fin del contrato </summary>
        public virtual DateTime FechaFin
        {
            get { return _fechaFin; }
            set { _fechaFin = value; }
        }


        /// <summary> Cliente involucrado en el contrato </summary>
        public virtual Cliente Cliente
        {
            get { return _cliente; }
            set { _cliente = value; }
        }


        /// <summary> Lista de fiadores del contrato </summary>
        public virtual IList<Fiador> Fiadores
        {
            get { return _fiadores; }
            set { _fiadores = value; }
        }


        /// <summary> Lista con la definicion de la  pension de arrendamiento </summary>
        public virtual Pension Pension
        {
            get { return _pension; }
            set { _pension = value; }
        }


        /// <summary> Lista con las ventas</summary>
        public virtual IList<Venta> Ventas
        {
            get { return _ventas; }
            set { _ventas = value; }
        }


        /// <summary> Lista de polizas </summary>
        public virtual IList<Poliza> Polizas
        {
            get { return _polizas; }
            set { _polizas = value; }
        }


        /// <summary> Estado del contrato </summary>
        /// <remarks>1 si esta activo 0 inactivo</remarks>
        public virtual int Estado
        {
            get { return _estado; }
            set { _estado = value; }
        }


        /// <summary> Tipo de garantia del contrato </summary>
        public virtual Garantia Garantia
        {
            get { return _garantia; }
            set { _garantia = value; }
        }


        /// <summary> Nombre comercial del contrato </summary>
        /// <remarks>Ejemplo McDonalds</remarks>
        public virtual string NombreComercial
        {
            get { return _nombreComercial; }
            set { _nombreComercial = value; }
        }


        /// <summary> Monto de la garantia </summary>
        /// <remarks>si y solo si el tipo de garantia no es fiador</remarks>
        public virtual double MontoGarantia
        {
            get { return _montoGarantia; }
            set { _montoGarantia = value; }
        }


        /// <summary> Establecimiento del contrato </summary>
        public virtual Establecimiento Establecimiento
        {
            get { return _establecimiento; }
            set { _establecimiento = value; }
        }


        /// <summary> Tipo de la firma del contrato </summary>
        public virtual string TipoFirma
        {
            get { return _tipoFirma; }
            set { _tipoFirma = value; }
        }


        /// <summary> Nombre del firmante </summary>
        public virtual string NombreFirmante
        {
            get { return _nombreFirmante; }
            set { _nombreFirmante = value; }
        }


        /// <summary> Lista de recaudos del contrato </summary>
        public virtual IList<Recaudo> Recaudos
        {
            get { return _recaudos; }
            set { _recaudos = value; }
        }


        /// <summary> Nombre del segundo firmante </summary>
        public virtual string NombreFirmante2
        {
            get { return _nombreFirmante2; }
            set { _nombreFirmante2 = value; }
        }


        /// <summary> Nombre del tercer firmante </summary>
        public virtual string NombreFirmante3
        {
            get { return _nombreFirmante3; }
            set { _nombreFirmante3 = value; }
        }

        #endregion
    }
}
